제출 #586210

#제출 시각아이디문제언어결과실행 시간메모리
586210LastRoninGondola (IOI14_gondola)C++14
컴파일 에러
0 ms0 KiB
#include "gondola.h" #include <bits/stdc++.h> #define ll long long #define mp make_pair #define f first #define s second #define pb push_back using namespace std; int valid(int n, int inputSeq[]) { int pos = -1; set<ll> b; for(int i = 0; i < n; i++) b.insert(inputSeq[i]); if(b.size() != n)return 0; for(int i = 0; i < n; i++) { if(inputSeq[i] <= n) { pos = i; break; } } if(pos == -1)return 1; ll a = inputSeq[pos]; ll nxt = pos; for(int j = 0; j <= n; j++) { if(inputSeq[nxt] <= n && inputSeq[nxt] != a)return 0; a++; if(a == n + 1)a = 1; nxt = (nxt + 1) % n; } return 1; } int replacement(int n, int gondolaSeq[], int replacementSeq[]) { vector<pair<int, int>> z; int pos = -1; int a[n] = {0}; for(int i = 0; i < n; i++) { if(gondolaSeq[i] <= n) { pos = i; } z.pb(mp(gondolaSeq[i], i)); } int b = (pos == -1 ? 1 : gondolaSeq[pos]); pos = (pos == -1 ? 0 : pos); for(int j = 0 ; j < n; j++) { a[pos] = b; pos = (pos + 1) % n; b++; if(b == n + 1)b = 1; } int cur = 0; ll mx = n; sort(z.begin(), z.end()); for(auto u : z) { if(u.f <= n)continue; replacementSeq[cur++] = a[u.s]; mx++; while(mx != u.f) { replacementSeq[cur++] = mx; mx++; } } return cur; } int countReplacement(int n, int inputSeq[]){ } int gondolaSequence[100001]; int replacementSequence[250001]; int main() { int i, n, tag; int nr; assert(scanf("%d", &tag)==1); assert(scanf("%d", &n)==1); for(i=0;i< n;i++) assert( scanf("%d", &gondolaSequence[i]) ==1); switch (tag){ case 1: case 2: case 3: printf("%d\n", valid(n, gondolaSequence)); break; case 4: case 5: case 6: nr = replacement(n, gondolaSequence, replacementSequence); printf("%d ", nr); if (nr > 0) { for (i=0; i<nr-1; i++) printf("%d ", replacementSequence[i]); printf("%d\n", replacementSequence[nr-1]); } else printf("\n"); break; case 7: case 8: case 9: case 10: printf("%d\n", countReplacement(n, gondolaSequence)); break; } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:15:14: warning: comparison of integer expressions of different signedness: 'std::set<long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   15 |  if(b.size() != n)return 0;
      |     ~~~~~~~~~^~~~
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:70:1: warning: no return statement in function returning non-void [-Wreturn-type]
   70 | }
      | ^
/usr/bin/ld: /tmp/ccCHM6eq.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cclddEeq.o:gondola.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccCHM6eq.o:(.bss+0xf4260): multiple definition of `gondolaSequence'; /tmp/cclddEeq.o:(.bss+0xf4260): first defined here
/usr/bin/ld: /tmp/ccCHM6eq.o:(.bss+0x0): multiple definition of `replacementSequence'; /tmp/cclddEeq.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status