Submission #81479

#TimeUsernameProblemLanguageResultExecution timeMemory
81479dualityHighway design (CEOI12_highway)C++11
100 / 100
3 ms1032 KiB
#define DEBUG 0 #include <bits/stdc++.h> using namespace std; #if DEBUG // basic debugging macros int __i__,__j__; #define printLine(l) for(__i__=0;__i__<l;__i__++){cout<<"-";}cout<<endl #define printLine2(l,c) for(__i__=0;__i__<l;__i__++){cout<<c;}cout<<endl #define printVar(n) cout<<#n<<": "<<n<<endl #define printArr(a,l) cout<<#a<<": ";for(__i__=0;__i__<l;__i__++){cout<<a[__i__]<<" ";}cout<<endl #define print2dArr(a,r,c) cout<<#a<<":\n";for(__i__=0;__i__<r;__i__++){for(__j__=0;__j__<c;__j__++){cout<<a[__i__][__j__]<<" ";}cout<<endl;} #define print2dArr2(a,r,c,l) cout<<#a<<":\n";for(__i__=0;__i__<r;__i__++){for(__j__=0;__j__<c;__j__++){cout<<setw(l)<<setfill(' ')<<a[__i__][__j__]<<" ";}cout<<endl;} // advanced debugging class // debug 1,2,'A',"test"; class _Debug { public: template<typename T> _Debug& operator,(T val) { cout << val << endl; return *this; } }; #define debug _Debug(), #else #define printLine(l) #define printLine2(l,c) #define printVar(n) #define printArr(a,l) #define print2dArr(a,r,c) #define print2dArr2(a,r,c,l) #define debug #endif // define #define MAX_VAL 999999999 #define MAX_VAL_2 999999999999999999LL #define EPS 1e-6 #define mp make_pair #define pb push_back // typedef typedef unsigned int UI; typedef long long int LLI; typedef unsigned long long int ULLI; typedef unsigned short int US; typedef pair<int,int> pii; typedef pair<LLI,LLI> plli; typedef vector<int> vi; typedef vector<LLI> vlli; typedef vector<pii> vpii; typedef vector<plli> vplli; // ---------- END OF TEMPLATE ---------- #include "office.h" int yes[4]; int main() { int i; int N = GetN(); for (i = 0; i < 4; i++) { yes[i] = isOnLine(i+1,((i+1) % 5)+1,((i+2) % 5)+1); if ((i == 0) && yes[i]) break; } if (i == 0) { vi v; for (i = 3; i < N; i += 2) { if (i == N-1) { if (!isOnLine(1,2,i+1)) v.pb(i); } else { if (!isOnLine(1,i+1,i+2)) { if (!isOnLine(1,2,i+1)) v.pb(i); else v.pb(i+1); } } if (v.size() == 2) break; } Answer(1,2,v[0]+1,v[1]+1); } else if (yes[0] || yes[1] || yes[2] || yes[3]) { int a,x,y; if (!yes[0] && yes[1] && yes[2] && !yes[3]) a = 0; else if (!yes[0] && !yes[1] && yes[2] && yes[3]) a = 1; else if (!yes[0] && !yes[1] && !yes[2] && yes[3]) a = 2; else if (yes[0] && !yes[1] && !yes[2] && !yes[3]) a = 3; else if (yes[0] && yes[1] && !yes[2] && !yes[3]) a = 4; x = (a+1) % 5,y = (a+2) % 5; vi v; v.pb(a); for (i = 5; i < N; i++) { if (i == N-1) { if (!isOnLine(x+1,y+1,i+1)) v.pb(i); } else { if (!isOnLine(x+1,i+1,i+2)) { if (!isOnLine(x+1,y+1,i+1)) v.pb(i); else v.pb(i+1); } } if (v.size() == 2) break; } Answer(x+1,y+1,v[0]+1,v[1]+1); } else { if (isOnLine(1,2,3)) Answer(1,2,4,5); else if (isOnLine(1,2,4)) Answer(1,2,3,5); else if (isOnLine(1,2,5)) Answer(1,2,3,4); else if (isOnLine(1,3,4)) Answer(1,3,2,5); else if (isOnLine(1,3,5)) Answer(1,3,2,4); else if (isOnLine(1,4,5)) Answer(1,4,2,3); else if (isOnLine(2,3,4)) Answer(2,3,1,5); else if (isOnLine(2,3,5)) Answer(2,3,1,4); else if (isOnLine(2,4,5)) Answer(2,4,1,3); else if (isOnLine(3,4,5)) Answer(3,4,1,2); } return 0; }

Compilation message (stderr)

office.c: In function 'int isOnLine(int, int, int)':
office.c:85:29: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
     _Fin(0, "Protocol error");
                             ^
office.c:88:29: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
     _Fin(0, "Protocol error");
                             ^
office.c:92:37: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
     _Fin(false, "Too many questions");
                                     ^
office.c:83:7: warning: unused variable 'i' [-Wunused-variable]
   int i;
       ^
office.c: In function 'void Answer(int, int, int, int)':
office.c:123:29: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
     _Fin(0, "Protocol error");
                             ^
office.c:128:44: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
       if( (-_Apa[na1]==_N-3) && (na2!=na1) && (nb2!=na1) ||
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
office.c:130:30: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
          _Fin(true, "Correct");
                              ^
office.c:132:36: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
          _Fin(false, "Wrong answer");
                                    ^
office.c:134:44: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
       if( (-_Apa[na2]==_N-3) && (na1!=na2) && (nb1!=na2) ||
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
office.c:136:30: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
          _Fin(true, "Correct");
                              ^
office.c:138:36: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
          _Fin(false, "Wrong answer");
                                    ^
office.c:140:33: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
       _Fin(false, "Wrong answer");
                                 ^
office.c:142:23: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
   _Fin(true, "Correct");
                       ^
office.c:120:27: warning: unused variable 'pont' [-Wunused-variable]
   int na1, nb1, na2, nb2, pont;
                           ^~~~
office.c: In function 'void _doInit()':
office.c:33:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &_N);
     ~~~~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...