Submission #197975

#TimeUsernameProblemLanguageResultExecution timeMemory
197975model_codeGrudanje (COCI19_grudanje)C++17
35 / 70
2062 ms13848 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef double lf;
typedef long double Lf;
typedef pair <int,int> pii;
typedef pair <ll, ll> pll;

#define TRACE(x) cerr << #x << "  " << x << endl
#define FOR(i, a, b) for (int i = (a); i < int(b); i++)
#define REP(i, n) FOR(i, 0, n)
#define all(x) (x).begin(), (x).end()
#define _ << " " <<

#define fi first
#define sec second
#define mp make_pair
#define pb push_back

const int MAXN = 100100;
const int ABC = 30;

int n, q;
string s;
int p[MAXN], kada[MAXN];
int a[MAXN], b[MAXN];

int pref[ABC][MAXN];

bool check(int x) {
  REP(j, ABC) {
    char z = s[0];
    if (kada[0] <= x) z = '*';
    pref[j][0] = (z - 'a' == j);
  }
  FOR(i, 1, n) {
    char z = s[i];
    if (kada[i] <= x) z = '*';
    REP(j, ABC) {
      pref[j][i] = pref[j][i - 1] + (j == z - 'a');
    }
  }

  REP(i, q) {
    REP(j, ABC) {
      int r = pref[j][b[i]];
      int l = 0;
      if (a[i]) l = pref[j][a[i] - 1];
      if (r - l > 1) return 0;
    }
  }
  return 1;
}

int main() {
  cin >> s;
  n = s.size();
  scanf("%d",&q);
  REP(i, q) {
    scanf("%d %d",&a[i],&b[i]);
    a[i]--; b[i]--;
  }
  REP(i, n) {
    scanf("%d",&p[i+1]);
    kada[--p[i+1]] = i+1;
  }

  REP(i, n + 1) {
    if (check(i)) {
      printf("%d\n",i);
      return 0;
    }
  }

  return 0;
}

Compilation message (stderr)

grudanje.cpp: In function 'int main()':
grudanje.cpp:59:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d",&q);
   ~~~~~^~~~~~~~~
grudanje.cpp:61:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d",&a[i],&b[i]);
     ~~~~~^~~~~~~~~~~~~~~~~~~~~
grudanje.cpp:65:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&p[i+1]);
     ~~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...