Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //#define _CRT_SECURE_NO_WARNINGS
- //#pragma GCC optimize("Ofast")
- //
- /*
- ╔╗╔╦═══╗
- ║║║║╔══╝
- ║╚╝║╚══╗
- ║╔╗║╔══╝
- ║║║║╚══╗
- ╚╝╚╩═══╝
- ╔╗╔╦╗╔╗
- ║║║║║║║
- ║╚╝║╚╝║
- ║╔╗╠═╗║
- ║║║║╔╝║
- ╚╝╚╝╚═╝
- ╔═══╦════╦══╗
- ╚══╗╠═╗╔═╣╔╗║
- ─╔═╝╝─║║─║║║║
- ─╚═╗╗─║║─║║║║
- ╔══╝║─║║─║╚╝║
- ╚═══╝─╚╝─╚══╝
- ╔═══╦══╦╗╔╗
- ║╔══╣╔╗║║║║
- ║╚══╣╚╝║╚╝║
- ║╔═╗║╔╗║╔╗║
- ║╚═╝║║║║║║║
- ╚═══╩╝╚╩╝╚╝
- */
- #include <bits/stdc++.h>
- using namespace std;
- #define IOS ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0)
- #define endl "\n"
- #define str string
- #define all(c) c.begin(),c.end()
- typedef long long ll;
- typedef unsigned long long ull;
- #pragma warning(disable : 4996) // для printf scanf
- ll power(ll a, ll b)
- {
- if (b == 0)
- return 1;
- if (b % 2)
- return (power(a, b - 1)*a);
- else {
- ll t = power(a, b / 2);
- return (t*t);
- }
- }
- bool prime(int a)
- {
- if (a == 2)
- return true;
- for (int i = 2; i*i <= a; ++i)
- if (a%i == 0)
- return false;
- return true;
- }
- int main()
- {
- IOS;
- int n;
- cin>>n;
- int ans=0;
- int v[4];
- for (int i=0;i<4;++i)
- v[i]=-1;
- while(n--){
- int a,b,c;
- cin>>a>>b>>c;
- ans+=max({a,b,c});
- if (c==max({a,b,c}))
- ans+=max(a,b);
- else if (b==max({a,b,c}))
- ans+=max(a,c);
- else
- ans+=max(b,c);
- vector <int>d{a,b,c};
- sort(all(d));
- {
- //d[1]-d[0]
- int cur=d[1]-d[0];
- if (cur%4==1){
- if (v[2]>1)
- v[3]=(v[3]==-1||v[2]+cur<v[3])?v[2]+cur:v[3];
- if (v[1]>1)
- v[2]=(v[2]==-1||v[1]+cur<v[2])?v[1]+cur:v[2];
- }
- if (cur%4==2){
- if (v[1]>1)
- v[3]=(v[3]==-1||v[1]+cur<v[3])?v[1]+cur:v[3];
- }
- v[cur%4]=(v[cur%4]==-1||cur<v[cur%4])?cur:v[cur%4];
- }
- {
- //d[2]-d[1]
- int cur=d[2]-d[1];
- if (cur%4==1){
- if (v[2]>1)
- v[3]=(v[3]==-1||v[2]+cur<v[3])?v[2]+cur:v[3];
- if (v[1]>1)
- v[2]=(v[2]==-1||v[1]+cur<v[2])?v[1]+cur:v[2];
- }
- if (cur%4==2){
- if (v[1]>1)
- v[3]=(v[3]==-1||v[1]+cur<v[3])?v[1]+cur:v[3];
- }
- v[cur%4]=(v[cur%4]==-1||cur<v[cur%4])?cur:v[cur%4];
- }
- {
- //d[2]-d[0]
- int cur=d[2]-d[0];
- if (cur%4==1){
- if (v[2]>1)
- v[3]=(v[3]==-1||v[2]+cur<v[3])?v[2]+cur:v[3];
- if (v[1]>1)
- v[2]=(v[2]==-1||v[1]+cur<v[2])?v[1]+cur:v[2];
- }
- if (cur%4==2){
- if (v[1]>1)
- v[3]=(v[3]==-1||v[1]+cur<v[3])?v[1]+cur:v[3];
- }
- v[cur%4]=(v[cur%4]==-1||cur<v[cur%4])?cur:v[cur%4];
- }
- }
- v[0]=0;
- //for (int i=1;i<=3;++i)
- // cout << v[i] << ' ';
- cout << ans-v[ans%4];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement