Pagini recente » Cod sursa (job #3200990) | Cod sursa (job #2333938) | Cod sursa (job #775189) | Cod sursa (job #706741) | Cod sursa (job #1604587)
#include <fstream>
#define InFile "calcule.in"
#define OutFile "calcule.out"
#define MAX 30001
#define MOD 20011
using namespace std;
void read ();
void solve_1 ();
void solve_2 ();
void print ();
unsigned int n;
unsigned short int k;
unsigned short int S[MAX];
unsigned int x[MAX], t[MAX];
//unsigned int matrix[MAX][MAX];
unsigned int Lmax, low, high, mid, cnt, sum;
unsigned int i, j, w;
unsigned int sol1, sol2;
int main ()
{
read ();
solve_1 ();
solve_2 ();
print ();
return 0;
}
void read ()
{
ifstream fin (InFile);
fin >> n >> k;
for (i=0; i<n; i++)
fin >> S[i];
}
void solve_1 ()
{
// sub.cres.max.
x[1] = 1;
cnt = 1;
for (i=2; i<=n; i++)
{
low = 1;
high = cnt;
while (low <= high)
{
mid = (low+high) / 2;
if (S[i] > S[x[mid]])
low = mid + 1;
else
high = mid - 1;
}
if (low > cnt)
cnt++;
x[low] = i;
t[i] = x[low-1];
}
sol1 = cnt;
}
void solve_2 ()
{
sum = 0;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
{
for (w=i; w<j; w++)
sum += S[w];
if (sum%k == 0)
sol2++;
}
sol2 %= MOD;
}
void print ()
{
ofstream fout (OutFile);
fout << sol1 << '\n';
fout << sol2;
}